package common

import (
	"math"
)

// 这里简单点，直接锁死每页最大条数
const (
	SIZE  = uint(15)
	START = uint(1) // 页码的起始位置
)

type Page struct {
	PageNum  uint   `json:"pageNum"`  // 当前页码
	PageSize uint   `json:"pageSize"` // 每页条数
	PageMax  uint   `json:"pageMax"`  // 最大页数
	Total    uint64 `json:"total"`    // 总条数

	PrePage  uint `json:"-"` // 上一页 ，这个暂时用不上
	NextPage uint `json:"-"` // 下一页 ，也用不上

	Offset uint `json:"-"` // 数据库查询偏移值

}

func NewPage(pageNum uint) *Page {
	page := &Page{
		PageSize: SIZE,
		PageNum:  pageNum,
	}
	if pageNum < START {
		page.PageNum = START
	}
	return page
}

func (p *Page) SetToTal(total uint64) {
	p.PageMax = uint(math.Ceil(float64(total) / float64(p.PageSize)))
	p.Total = total
	// 如果当前页码超过了最大页数，设置为最大页
	if p.PageNum > p.PageMax {
		p.PageNum = p.PageMax
	}
	p.Offset = (p.PageNum - START) * p.PageSize
}
